home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / andere sprachen / perl5 / perl5.002 / makefile.sh < prev    next >
Encoding:
Makefile  |  1996-02-29  |  13.5 KB  |  471 lines

  1. case $CONFIG in
  2. '')
  3.     if test -f config.sh; then TOP=.;
  4.     elif test -f ../config.sh; then TOP=..;
  5.     elif test -f ../../config.sh; then TOP=../..;
  6.     elif test -f ../../../config.sh; then TOP=../../..;
  7.     elif test -f ../../../../config.sh; then TOP=../../../..;
  8.     else
  9.         echo "Can't find config.sh."; exit 1
  10.     fi
  11.     . $TOP/config.sh
  12.     ;;
  13. esac
  14. : This forces SH files to create target in same directory as SH file.
  15. : This is so that make depend always knows where to find SH derivatives.
  16. case "$0" in
  17. */*) cd `expr X$0 : 'X\(.*\)/'` ;;
  18. esac
  19.  
  20. case "$d_dosuid" in
  21. *define*) suidperl='suidperl' ;;
  22. *) suidperl='';;
  23. esac
  24.  
  25. shrpenv=""
  26. case "$d_shrplib" in
  27. *define*)
  28.     patchlevel=`egrep '^#define[     ]+PATCHLEVEL' patchlevel.h \
  29.     | awk '{print $3}'`
  30.     case "$patchlevel" in
  31.      *[0-9]) plibsuf=.$so.$patchlevel;;
  32.      *)        plibsuf=.$so;;
  33.     esac
  34.     case "$shrpdir" in
  35.      /usr/lib)    ;;
  36.      "")    ;;
  37.      *)        shrpenv="env LD_RUN_PATH=$shrpdir";;
  38.     esac
  39.     pldlflags="$cccdlflags";;
  40. *)  plibsuf=.a
  41.     pldlflags="";;
  42. esac
  43.  
  44. : Prepare dependency lists for Makefile.
  45. dynamic_list=' '
  46. for f in $dynamic_ext; do
  47.     : the dependency named here will never exist
  48.       base=`echo "$f" | sed 's/.*\///'`
  49.     dynamic_list="$dynamic_list lib/auto/$f/$base.$dlext"
  50. done
  51.  
  52. static_list=' '
  53. static_ai_list=' '
  54. for f in $static_ext; do
  55.     base=`echo "$f" | sed 's/.*\///'`
  56.     static_list="$static_list lib/auto/$f/$base.a"
  57.     if test -f ext/$f/AutoInit.c; then
  58.         static_ai_list="$static_ai_list ext/$f/AutoInit.c"
  59.     fi
  60.     if test -f ext/$f/AutoInit.pl; then
  61.         static_ai_list="$static_ai_list ext/$f/AutoInit.pl"
  62.     fi
  63. done
  64.  
  65. echo "Extracting Makefile (with variable substitutions)"
  66. $spitshell >Makefile <<'!NO!SUBS!'
  67. # Makefile.SH
  68. # This file is derived from Makefile.SH.  Any changes made here will
  69. # be lost the next time you run Configure.
  70. #  Makefile is used to generate GNUmakefile.  The only difference
  71. #  is that GNUmakefile has the dependencies filled in at the end.
  72. #
  73. #
  74. !NO!SUBS!
  75.  
  76. $spitshell >>Makefile <<!GROK!THIS!
  77. # I now supply perly.c with the kits, so don't remake perly.c without byacc
  78. BYACC = $byacc
  79. CC = $cc
  80. LD = $ld
  81.  
  82. LDFLAGS = $ldflags
  83. CLDFLAGS = $ldflags
  84.  
  85. SMALL = $small
  86. LARGE = $large $split
  87. mallocsrc = $mallocsrc
  88. mallocobj = $mallocobj
  89. LNS = $lns
  90. RMS = rm -f
  91. ranlib = $ranlib
  92.  
  93. # The following are mentioned only to make metaconfig include the
  94. # appropriate questions in Configure.  If you want to change these,
  95. # edit config.sh instead, or specify --man1dir=/wherever on
  96. # installman commandline.
  97. bin = $installbin
  98. scriptdir = $scriptdir
  99. privlib = $installprivlib
  100. man1dir = $man1dir
  101. man1ext = $man1ext
  102. man3dir = $man3dir
  103. man3ext = $man3ext
  104.  
  105. # The following are used to build and install shared libraries for
  106. # dynamic loading.
  107. LDDLFLAGS = $lddlflags
  108. CCDLFLAGS = $ccdlflags
  109. DLSUFFIX = .$dlext
  110. PLDLFLAGS = $pldlflags
  111. PLIBSUF = $plibsuf
  112. SHRPENV = $shrpenv
  113.  
  114. dynamic_ext = $dynamic_list
  115. static_ext = $static_list
  116. ext = \$(dynamic_ext) \$(static_ext)
  117. static_ext_autoinit = $static_ai_list
  118. DYNALOADER = lib/auto/DynaLoader/DynaLoader.a
  119.  
  120.  
  121. libs = $libs $cryptlib
  122.  
  123. public = perl $suidperl utilities translators
  124.  
  125. shellflags = $shellflags
  126.  
  127. ## To use an alternate make, set \$altmake in config.sh.
  128. MAKE = ${altmake-make}
  129.  
  130. # These variables will be used in a future version to make
  131. # the make file more portable to non-unix systems.
  132. AR = $ar
  133. EXE_EXT = $exe_ext
  134. LIB_EXT = $lib_ext
  135. OBJ_EXT = $obj_ext
  136. PATH_SEP = $path_sep
  137.  
  138. FIRSTMAKEFILE = $firstmakefile
  139.  
  140. # Any special object files needed by this architecture, e.g. os2/os2.obj
  141. ARCHOBJS = $archobjs
  142.  
  143. !GROK!THIS!
  144.  
  145. ## In the following dollars and backticks do not need the extra backslash.
  146. $spitshell >>Makefile <<'!NO!SUBS!'
  147.  
  148. CCCMD = `sh $(shellflags) cflags $(perllib) $@`
  149.  
  150. private = preplibrary lib/ExtUtils/Miniperl.pm lib/Config.pm
  151.  
  152. # Files to be built with variable substitution before miniperl
  153. # is available.
  154. sh = Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH \
  155.     makedir.SH perl_exp.SH writemain.SH
  156.  
  157. shextract = Makefile cflags config.h makeaperl makedepend \
  158.     makedir perl_exp writemain
  159.  
  160. # Files to be built with variable substitution after miniperl is
  161. # available.  Dependencies handled manually below (for now).
  162.  
  163. pl = pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL
  164.  
  165. plextract = pod/pod2html pod/pod2latex pod/pod2man pod/pod2text
  166.  
  167. addedbyconf = UU $(shextract) $(plextract) pstruct
  168.  
  169. h1 = EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h
  170. h2 = embed.h form.h gv.h handy.h hv.h keywords.h mg.h op.h
  171. h3 = opcode.h patchlevel.h perl.h perly.h pp.h proto.h regcomp.h
  172. h4 = regexp.h scope.h sv.h unixish.h util.h
  173. h = $(h1) $(h2) $(h3) $(h4)
  174.  
  175. c1 = $(mallocsrc) av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c
  176. c2 = perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c
  177. c3 = gv.c sv.c taint.c toke.c util.c deb.c run.c globals.c
  178.  
  179. c = $(c1) $(c2) $(c3) miniperlmain.c perlmain.c
  180.  
  181. obj1 = $(mallocobj) gv.o toke.o perly.o op.o regcomp.o dump.o util.o mg.o
  182. obj2 = hv.o av.o run.o pp_hot.o sv.o pp.o scope.o pp_ctl.o pp_sys.o
  183. obj3 = doop.o doio.o regexec.o taint.o deb.o globals.o
  184.  
  185.  
  186. obj = $(obj1) $(obj2) $(obj3) $(ARCHOBJS)
  187.  
  188. # Once perl has been Configure'd and built ok you build different
  189. # perl variants (Debugging, Embedded, Multiplicity etc) by saying:
  190. #    make clean; make perllib=libperl<type>.a
  191. # where <type> is some combination of 'd' and(or) 'e' or 'm'.
  192. # See cflags to understand how this works.
  193. #
  194. # Eventually some form of 'make-a-perl' script will automate this
  195. # together with linking a perl executable with any desired
  196. # static modules.
  197. perllib = libperl$(PLIBSUF)
  198.  
  199. lintflags = -hbvxac
  200.  
  201. # grrr
  202. SHELL = /bin/sh
  203.  
  204. .c.o:
  205.     $(CCCMD) $(PLDLFLAGS) $*.c
  206.  
  207. all: GNUmakefile miniperl $(private) $(plextract) $(public) $(dynamic_ext)
  208.     @echo " "; echo "    Everything is up to date."
  209.  
  210. translators:    miniperl lib/Config.pm FORCE
  211.     @echo " "; echo "    Making x2p stuff"; cd x2p; $(MAKE) all
  212.  
  213. utilities:    miniperl lib/Config.pm FORCE
  214.     @echo " "; echo "    Making utilities"; cd utils; $(MAKE) all
  215.  
  216.  
  217. # This is now done by installman only if you actually want the man pages.
  218. #    @echo " "; echo "    Making docs"; cd pod; $(MAKE) all;
  219.  
  220. # Phony target to force checking subdirectories.
  221. # Apparently some makes require an action for the FORCE target.
  222. FORCE:
  223.     @sh -c true
  224.  
  225. # The $& notation tells Sequent machines that it can do a parallel make,
  226. # and is harmless otherwise.
  227. # The miniperl -w -MExporter line is a basic cheap test to catch errors
  228. # before make goes on to run preplibrary and then MakeMaker on extensions.
  229. # This is very handy because later errors are often caused by miniperl
  230. # build problems but that's not obvious to the novice.
  231. # The Module used here must not depend on Config or any extensions.
  232.  
  233. miniperl: $& miniperlmain.o $(perllib)
  234.     $(CC) $(LARGE) $(CLDFLAGS) -o miniperl miniperlmain.o $(perllib) $(libs)
  235.     @./miniperl -w -Ilib -MExporter -e 0 || $(MAKE) minitest
  236.  
  237. miniperlmain.o: miniperlmain.c
  238.     $(CCCMD) $(PLDLFLAGS) $*.c
  239.  
  240. perlmain.c: miniperlmain.c config.sh GNUmakefile $(static_ext_autoinit)
  241.     sh writemain $(DYNALOADER) $(static_ext) > tmp
  242.     sh mv-if-diff tmp perlmain.c
  243.  
  244. perlmain.o: perlmain.c
  245.     $(CCCMD) $(PLDLFLAGS) $*.c
  246.  
  247. # The file ext.libs is a list of libraries that must be linked in
  248. # for static extensions, e.g. -lm -lgdbm, etc.  The individual
  249. # static extension Makefile's add to it.
  250. ext.libs: $(static_ext)
  251.     -@test -f ext.libs || touch ext.libs
  252.  
  253. perl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs
  254.     $(SHRPENV) $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o perl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs)
  255.  
  256. pureperl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs
  257.     purify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o pureperl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs)
  258.  
  259. quantperl: $& perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs
  260.     quantify $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o quantperl perlmain.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs)
  261.  
  262. $(perllib): $& perl.o $(obj)
  263. !NO!SUBS!
  264.  
  265. case "$d_shrplib" in
  266. *define*)
  267. $spitshell >>Makefile <<'!NO!SUBS!'
  268.     $(LD) $(LDDLFLAGS) -o $@ perl.o $(obj)
  269. !NO!SUBS!
  270. ;;
  271. *)
  272. $spitshell >>Makefile <<'!NO!SUBS!'
  273.     rm -f $(perllib)
  274.     $(AR) rcu $(perllib) perl.o $(obj)
  275.     @$(ranlib) $(perllib)
  276. !NO!SUBS!
  277. ;;
  278. esac
  279.  
  280. $spitshell >>Makefile <<'!NO!SUBS!'
  281.  
  282. # This version, if specified in Configure, does ONLY those scripts which need
  283. # set-id emulation.  Suidperl must be setuid root.  It contains the "taint"
  284. # checks as well as the special code to validate that the script in question
  285. # has been invoked correctly.
  286.  
  287. suidperl: $& sperl.o perlmain.o $(perllib) $(DYNALOADER) $(static_ext) ext.libs
  288.     $(CC) $(LARGE) $(CLDFLAGS) $(CCDLFLAGS) -o suidperl perlmain.o sperl.o $(perllib) $(DYNALOADER) $(static_ext) `cat ext.libs` $(libs)
  289.  
  290. sperl.o: perl.c perly.h patchlevel.h $(h)
  291.     $(RMS) sperl.c
  292.     $(LNS) perl.c sperl.c
  293.     $(CCCMD) -DIAMSUID sperl.c
  294.     $(RMS) sperl.c
  295.  
  296. # We have to call our ./makedir because Ultrix 4.3 make can't handle the line
  297. #    test -d lib/auto || mkdir lib/auto
  298. #
  299. preplibrary: miniperl lib/Config.pm $(plextract)
  300.     @./makedir lib/auto
  301.     @echo "    AutoSplitting perl library"
  302.     @./miniperl -Ilib -e 'use AutoSplit; \
  303.         autosplit_lib_modules(@ARGV)' lib/*.pm lib/*/*.pm
  304.  
  305. # Take care to avoid modifying lib/Config.pm without reason
  306. lib/Config.pm: config.sh miniperl
  307.     ./miniperl configpm tmp
  308.     sh mv-if-diff tmp lib/Config.pm
  309.  
  310. lib/ExtUtils/Miniperl.pm: miniperlmain.c miniperl minimod.pl lib/Config.pm
  311.     ./miniperl minimod.pl > tmp && mv tmp $@
  312.  
  313. $(plextract):    miniperl lib/Config.pm
  314.     ./miniperl -Ilib $@.PL
  315.  
  316. install: all install.perl install.man
  317.  
  318. install.perl:    all
  319.     ./perl installperl
  320.  
  321. install.man:    all
  322.     ./perl installman
  323.  
  324. # Not implemented yet.
  325. #install.html:    all
  326. #    ./perl installhtml
  327.  
  328. # I now supply perly.c with the kits, so the following section is
  329. # used only if you force byacc to run by saying
  330. #     make run_byacc
  331. # Since we patch up the byacc output, the perly.fixer script needs
  332. # to run with precisely the same version of byacc as I use.  You
  333. # normally shouldn't remake perly.[ch].
  334.  
  335. run_byacc:    FORCE
  336.     @ echo 'Expect' 130 shift/reduce and 1 reduce/reduce conflict
  337.     $(BYACC) -d perly.y
  338.     sh $(shellflags) ./perly.fixer y.tab.c perly.c
  339.     mv y.tab.h perly.h
  340.     echo 'extern YYSTYPE yylval;' >>perly.h
  341.     - perl vms/vms_yfix.pl perly.c perly.h vms/perly_c.vms vms/perly_h.vms
  342.  
  343. # We don't want to regenerate perly.c and perly.h, but they might
  344. # appear out-of-date after a patch is applied or a new distribution is
  345. # made.
  346. perly.c: perly.y
  347.     -@touch perly.c
  348.  
  349. perly.h: perly.y
  350.     -@touch perly.h
  351.  
  352. # The following three header files are generated automatically
  353. #    keywords.h:    keywords.pl
  354. #    opcode.h:    opcode.pl
  355. #    embed.h:      embed.pl global.sym interp.sym
  356. # The correct versions should be already supplied with the perl kit,
  357. # in case you don't have perl available.
  358. # To force them to run, type
  359. #    make regen_headers
  360. regen_headers:    FORCE
  361.     perl keywords.pl
  362.     perl opcode.pl
  363.     perl embed.pl
  364.  
  365. # Extensions:
  366. # Names added to $(dynamic_ext) or $(static_ext) will automatically
  367. # get built.  There should ordinarily be no need to change any of
  368. # this part of GNUmakefile.
  369. #
  370. # The dummy dependency is a place holder in case $(dynamic_ext) or
  371. # $(static_ext) is empty.
  372. #
  373. # DynaLoader may be needed for extensions that use Makefile.PL.
  374.  
  375. $(DYNALOADER):    miniperl preplibrary FORCE
  376.     @sh ext/util/make_ext static $@ LIBPERL_A=$(perllib)
  377.  
  378. d_dummy $(dynamic_ext):    miniperl preplibrary $(DYNALOADER) FORCE
  379.     @sh ext/util/make_ext dynamic $@ LIBPERL_A=$(perllib)
  380.  
  381. s_dummy $(static_ext):    miniperl preplibrary $(DYNALOADER) FORCE
  382.     @sh ext/util/make_ext static $@ LIBPERL_A=$(perllib)
  383.  
  384. clean:
  385.     rm -f *.o *.a all perlmain.c
  386.     rm -f perl.exp ext.libs
  387.     -cd pod; $(MAKE) clean
  388.     -cd utils; $(MAKE) clean
  389.     -cd x2p; $(MAKE) clean
  390.     -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) ; do \
  391.     sh ext/util/make_ext clean $$x ; \
  392.     done
  393.     rm -f perl suidperl miniperl $(perllib)
  394.  
  395. realclean: clean
  396.     -cd os2; rm -f Makefile
  397.     -cd pod; $(MAKE) realclean
  398.     -cd utils; $(MAKE) realclean
  399.     -cd x2p; $(MAKE) realclean
  400.     -@for x in $(DYNALOADER) $(dynamic_ext) $(static_ext) ; do \
  401.     sh ext/util/make_ext realclean $$x ; \
  402.     done
  403.     rm -f *.orig */*.orig *~ */*~ core t/core t/c t/perl
  404.     rm -rf $(addedbyconf)
  405.     rm -f GNUmakefile GNUmakefile.old
  406.     rm -f $(private)
  407.     rm -rf lib/auto
  408.     rm -f lib/.exists
  409.     rm -f h2ph.man pstruct
  410.     rm -rf .config
  411.     @echo "Note that make realclean does not delete config.sh"
  412.  
  413. clobber:    realclean
  414.     rm -f config.sh cppstdin
  415.  
  416. distclean:    clobber
  417.  
  418. # The following lint has practically everything turned on.  Unfortunately,
  419. # you have to wade through a lot of mumbo jumbo that can't be suppressed.
  420. # If the source file has a /*NOSTRICT*/ somewhere, ignore the lint message
  421. # for that spot.
  422.  
  423. lint: perly.c $(c)
  424.     lint $(lintflags) $(defs) perly.c $(c) > perl.fuzz
  425.  
  426. GNUmakefile:    Makefile
  427.     $(MAKE) depend
  428.  
  429. config.h: config.sh
  430.     /bin/sh config_h.SH
  431.  
  432. # When done, touch perlmain.c so that it doesn't get remade each time.
  433. depend: makedepend
  434.     ./makedepend
  435.     - test -s perlmain.c && touch perlmain.c
  436.     cd x2p; $(MAKE) depend
  437.  
  438. test: miniperl perl preplibrary $(dynamic_ext)
  439.     - cd t && chmod +x TEST */*.t
  440.     - cd t && (rm -f perl; $(LNS) ../perl perl) && ./perl TEST </dev/tty
  441.  
  442. minitest: miniperl
  443.     - cd t && chmod +x TEST */*.t
  444.     - cd t && (rm -f perl; $(LNS) ../miniperl perl) \
  445.         && ./perl TEST base/*.t comp/*.t cmd/*.t io/*.t op/*.t </dev/tty
  446.  
  447. clist:    $(c)
  448.     echo $(c) | tr ' ' '\012' >.clist
  449.  
  450. hlist:  $(h)
  451.     echo $(h) | tr ' ' '\012' >.hlist
  452.  
  453. shlist: $(sh)
  454.     echo $(sh) | tr ' ' '\012' >.shlist
  455.  
  456. pllist: $(pl)
  457.     echo $(pl) | tr ' ' '\012' >.pllist
  458.  
  459. # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE
  460. # If this runs make out of memory, delete /usr/include lines.
  461. !NO!SUBS!
  462.  
  463. $eunicefix Makefile
  464. case `pwd` in
  465. *SH)
  466.     $rm -f ../Makefile
  467.     ln Makefile ../Makefile
  468.     ;;
  469. esac
  470. rm -f GNUmakefile
  471.